WePoker
README wePoker wePoker is a multi-player poker game for Android that allows collocated people to play a game of Poker. wePoker does not need a connection to the internet, everything happens using local communication technology. On newer devices, wePoker will even use Wifi-Direct and NFC! wePoker won the 'best app' award at the V Hack Android Belgium Hackathon in October 2012. You can see a demo at http://bit.ly/wePokerDemo or download the application at http://bit.ly/wePokerapp. The code can be found on Github: https://github.com/AmbientTalk/wePoker. Features - Nomadic and Spontaneous Poker games! - Play poker even when disconnected from the internet or when no free wifi is available. This is much more common than expected: trains, Eurostar, airplane, bus, metro, car, at holidays, at the beach, cafe, ... And those are actually the places where you have spare time to play poker! No set-up or pin code or internet required, just launch the application and start playing with your friends. - Multi-Device interactivity: max_fun(x)_ { x | x E P{Phones, Tablet, GoogleTV, SmartWatches} } - Optimise experience based on available resources at that moment in time. For instance: - Two phones (or more) can start a local game - Add a tablet that can serve as the poker table - The GoogleTV serves as a high-end poker table where the audience can spectate at a distance. Pubs can offer a GoogleTV basestation with the opportunity to win beers! Local gaming with a couple of friends also benefit from relaxed living-room environment. Furthermore, the stable connectivity of a GoogleTV allows users to join a game over the internet if wanted. - A SmartWatch enables intelligent, personalised poker estimates (i.e. what is the probability I can win this game?) Interactivity - Incognito-mode: When hiding the phone, your private poker cards will be displayed - Curling cards: Obtain the slick physical feeling of curling cards - Fold-on-backside: Automated fold when phone is put on its back - Swipe gestures: Throwing chips at the table - Speech support: Google's Speech Recognition (with Levenshtein implementation to cope with bad recognition results) - Talkback: Text2Speech and customized content descriptions - Haptic feedback: Immersion's SDK Connectivity: Using the latest Android API's - With infrastructure (i.e. connected to Wifi): - Automated discovery of Poker games on the local Wifi. - Without infrastructure: - Wifi-Direct: Allows users to set up a local game without any infrastructure required (Android 4.1 or better). Our intelligent priority connectivity layer configures all complex Wifi-Direct settings automatically. - NFC: Allows users to join a game by simply holding the phone near the tablet (NFC Beam) - RFID: Allows users to scan an RFID tag to join a specific game - QRCode: For devices without NFC and Wifi-Direct, we support QRCodes to join a game without having to go to any settings menu. Accessibility: we customized our interface for accessibility - Check for audio feedback (when the microphone plugged in) - Set content description for all UI fields to improve talkback - Enforced UI view where all cards are accessible (even if there is a dedicated poker table) - Allows visually impaired users to compete with sighted people without game-specific advantages for any side. Extra - Cheat mode: players can add money on the server view. All players get informed via visual and audio feedback about this sneaky interaction. This allows to customize the money rules. - Customize nicknames and avatars - Free gaming (no internet required) - Open source! Log Sun 10.00: - Added accessibility layer (v1): Toasts, additional feedback, ... - Ideas for presentation - Support for known wifi hotspots - Updated README - Abstractions for NFC and QR Log Sun 2.00: - Working NFC Beam - Working RFID+Beam from Clients (propagated sharing wit cross-device invitations) - Tablet avatars and rescaling (WIP) - Uploaded new Play store version, search for wePoker - SLEEP! Log Sat 23.00: - Fixed Manifest for Google TV (hopefully) - RFID tag scanning works to bootstrap wifi-direct! - Fixing NFC Beaming - Updating table UI, including cool avatars Under development - Full NFC compatibility - Beam support - QRCode support - Google TV interface - Tablet interface - Analytics of users' behavior - Poker card win-probability prediction - Videos! Latest Pictures Follow us on github https://github.com/AmbientTalk/wePoker ! Motivation Current poker games are limited on two domains: tools and infrastructure. To start a poker game, a complete set of cards and chips are required. Additionally, it requires a stable room which is not feasible in a moving setting (e.g. inside of a car or train). Current virtual solutions on the other hand require a non-volatile connection to a poker-provider backend (e.g. dedicated website or database). We argue that local poker games can be established spontaneously without the need for a server backend (which requires a continuous internet connection). We also hope that by using the latest Android technologies such as WifiDirect and NFC can benefit the user experience, offering a more joyful gaming solution compared to traditional physical poker solutions. Finally, due to the Android invasion of all kinds of computer devices, our wePoker application can offer a full fledged multi-display experience. We obtain this in a flexible manner where all devices are seen as optional modalities, but when available, emerge in a complete poker experience. We focus on: - Multi-screen experience - Mobility - Spontaneous gaming - Social interaction - No infrastructure required and make the best use of the devices you have at the time - Support continuous (non-volatile) internet connectivity - Compatible with 'on-the-road' scenarios - Intuitive interaction - Accessibility layer Use state-of-the-art ad-hoc communication functionality NFC, Wifi-Direct, Bluetooth, WIFI - Multi-user FUN Poker game up to 23 players (card limit) Phones, Tablets, Watches, TV's The team *Dries Harnie (sat) *Lode Hoste *Elisa Gonzalez Boix *Andoni Lombide Carreton *Hoi Lam (London only) The wePoker "hack" '1. Connectivity' - Ambient-Poker is preconfigured for TV's, Tablets and Phones. When run from a TV or tablet, the poker game displays the table with the currently joined players. When run on a phone, the application will configure itself as a poker user. - Connectivity: when possible, the server (tablet) will broadcast its poker service every few seconds on the local wireless network. This allows new clients to automatically discover the poker service and join the game (in the next round) - Additional connectivity (I): phones can also serve as a server. When no server was discovered after 10 seconds, the phone will ask you to start an Ambient-Poker game. - Additional connectivity (II): when wifi broadcasting is disabled (many of the public wifi providers block broadcasts), phones can be connected using an NFC tag or NFC beaming. - We support up to 23 players (card game limitation) - If devices disconnect, the server will update the table view and automatically continue with the game. This implies fault tolerant design for a volatile scenarios. '2. 'Interaction '- Full visualisation' of the poker game '- Curcling cards '''for private viewing - Proximity sensor allowing '''hidden view' of both cards (incognito). This is activate when two hands are covering the display form other players. - "'Throwing chips'" by swiping up and down to add or reduce bet amount. - Use your tablet or phone interactivity as a client - Use your tablet, phone 'interactivity 'or TV as a server What APIs, tools or kit did you use? *Proximity sensor *Light sensor *Ambient WIFI broadcasting *Multi-touch with gestures *Wifi-Direct *Morena NFC discovery *NFC writing *Poker rules for winning *Immersion's Haptic SDK *Text-To-Speech *Speech-To-Command Limitations *SmartWatch is not supported at the moment. (Incompatibility with most of our phones) SDK *Works on Android versions: 10 - 15 (NFC) - 16 *Works on Google TV (21.00) Media License TBD (LGPL or Apache) Source code and links https://github.com/VHackAndroid/BeTfsp History wePoker at the end of the Belgian hackathon wePoker during the Belgian hackathon part 2 wePoker during the Belgian hackathon part 1 wePoker Development docs